介紹一下這些分別是甚麼?
結構(struct)、聯合(union) 和 列舉(enum) 是三種不同的數據類型,常用來組織和管理不同形式的數據。
結構是一種用來定義多個變量(可以是不同類型)的數據結構。結構允許你將不同類型的變量組合成一個單一的數據單元。每個成員都有自己獨立的內存空間,成員變量的大小和數量決定了結構的總大小。結構中的每個成員都可以獨立地被訪問和修改。
聯合是一種特殊的數據結構,允許你在同一內存位置存儲不同類型的數據。它的所有成員共享同一塊內存,因此聯合的大小取決於其最大成員的大小。儘管可以定義多個成員,但在任何時刻,只有一個成員可以儲存有效的數據,因為所有成員共用同一塊內存。
列舉是一種用來定義整數常量的數據類型。它允許你為一組整數值定義易於閱讀的名稱。列舉中的每個標識符都代表一個整數值,預設從 0 開始,並可以自定義某些標識符的值。列舉主要用於表示狀態、選項或標誌。
程式小練習(使用結構設計好友名單):
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
struct FRIEND {
string name;
string phone;
string birth;
};
void show (FRIEND (1, int) ;
FRIEND enter (void);
int main (void)
{
int now=0;
char ch;
FRIEND f [20];
while (1)
{
cout<<"請問您要 1)輸出好友名單 2)新增好友資料O)離開:";
cin>>ch;
if (ch == '1'){
if (now ! = 0)
show (f, now) ;
else
cout<<"目前尚無資料";
}
else if (ch == '2') {
if (now>=20)
cout<<"名單已滿!";
else{
f [now] = enter ( );
now++;
}
}
else if (ch=='0' )
break;
fflush (stin) ;
}
return 0;
}
void show (FRIEND f[ ], int size)
{
int i;
for (i=0;i<size; i++) {
Cout<<"======================" <<endl;
cout<<f[i].name<<的電話:"<<f[i].phone<<endl;
cout<<f[i] name<<"的生日: <<f[i].birth<<endl;
}
cout<<"===================== " <<endl;
}
FRIEND enter (void)
{
FRIEND newFriend;
cout<<"請輸入名稱:";
cin>>newFriend.name;
cout<<"請輸入電話號碼:";
cin>>newFriend.phone;
cout<<"請輸入生日:";
cin>>newFriend.birth;
return newFriend;
}
小練習(印出聯合的內容程式):
#include <iostream>
using namespace std;
union my_union {
int a;
char b;
double c;
};
int main ()
{
union my_union u1;
i1.a =65;
cout<<u1.a<<u1.b<<" "<<u1.c;
return 0;
}
小練習(列舉的內容程式):
#include <iostream>
using namespace std;
enum Season{
Spring,
Summer,
Fall,
Winter,
};
int main(){
Season season;
season=Summer;
switch(season){
case Spring:
cout<<" warm outside"<<endl;
break;
case Summer:
cout<<" hot outside"<<endl;
break;
case Fall:
cout<<" cool outside"<<endl;
break;
case Winter:
cout<<" cold outside"<<endl;
break;
}
return 0;
}
!!以上內容是跟著第一次學C++就上手第二版第11章跟著練習實作!!
明天會說明到typedef指令跟程式實作練習~希望一切順利完成囉